18092
12110
Dette spørgsmåls svar er en indsats fra samfundet. Rediger eksisterende svar for at forbedre dette indlæg. Det accepterer i øjeblikket ikke nye svar eller interaktioner.
Hvordan kan jeg omdirigere brugeren fra en side til en anden ved hjælp af jQuery eller ren JavaScript? 
1
2
Næste
Man omdirigerer ikke bare ved hjælp af jQuery
jQuery er ikke nødvendigt, og window.location.replace (...) simulerer bedst en HTTP-omdirigering.
window.location.replace (...) er bedre end at bruge window.location.href, fordi erstat () ikke holder den oprindelige side i sessionshistorikken, hvilket betyder, at brugeren ikke sidder fast i en uendelig back- knap fiasko.
Hvis du vil simulere nogen, der klikker på et link, skal du bruge
placering. href
Hvis du vil simulere en HTTP-omdirigering, skal du bruge location.replace
For eksempel:
// lignende adfærd som en HTTP-omdirigering
window.location.replace ("http://stackoverflow.com");
// lignende adfærd som at klikke på et link
window.location.href = "http://stackoverflow.com";
|
ADVARSEL: Dette svar er blot givet som en mulig løsning; det er naturligvis ikke den bedste løsning, da det kræver jQuery. I stedet foretrækker den rene JavaScript-løsning.
$ (placering) .attr ('href', 'http://stackoverflow.com')
|
Standard "vanilje" JavaScript-måde at omdirigere en side på
window.location.href = 'newPage.html';
Eller mere simpelt: (da vinduet er globalt)
location.href = 'newPage.html';
Hvis du er her, fordi du mister HTTP_REFERER, når du omdirigerer, skal du fortsætte med at læse:
(Ellers ignorere denne sidste del)
Det følgende afsnit er for dem, der bruger HTTP_REFERER som en af ​​mange sikkerhedsforanstaltninger (selvom det ikke er en god beskyttelsesforanstaltning). Hvis du bruger Internet Explorer 8 eller lavere, går disse variabler tabt, når du bruger enhver form for JavaScript-sideomdirigering (location.href osv.).
Nedenfor skal vi implementere et alternativ til IE8 & lavere, så vi ikke mister HTTP_REFERER. Ellers kan du næsten altid blot bruge window.location.href.
Test mod HTTP_REFERER (URL-indsættelse, session osv.) Kan hjælpe med at fortælle, om en anmodning er legitim.
(Bemærk: der er også måder at omgå / spoofe disse henvisere på, som bemærket af droops link i kommentarerne)
Enkel løsning til testning på tværs af browsere (fallback til window.location.href til Internet Explorer 9+ og alle andre browsere)
Anvendelse: omdirigering ('anotherpage.aspx');
funktion omdirigering (url) {
var ua = navigator.userAgent.toLowerCase (),
isIE = ua.indexOf ('msie')! == -1,
version = parseInt (ua.substr (4, 2), 10);
// Internet Explorer 8 og lavere
hvis (isIE && version <9) {
var link = document.createElement ('a');
link.href = url;
document.body.appendChild (link);
link.click ();
}
// Alle andre browsere kan bruge standardvinduet.location.href (de mister ikke HTTP_REFERER som Internet Explorer 8 og lavere gør)
andet {
window.location.href = url;
}
}
|
Der er mange måder at gøre dette på.
// vindue.placering
window.location.replace ('http://www.example.com')
window.location.assign ('http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/ sti'
// vindue.historie
window.history.back ()
window.history.go (-1)
// window.navigate; KUN for gamle versioner af Internet Explorer
window.navigate ('top.jsp')
// Sandsynligvis ingen bueno
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';
// jQuery
$ (placering) .attr ('href', 'http: //www.example.com')
$ (vindue) .attr ('placering', 'http: //www.example.com')
$ (placering). prop ('href', 'http://www.example.com')
|
Dette fungerer for enhver browser:
window.location.href = 'din_url';
|
Det ville hjælpe, hvis du var lidt mere beskrivende i, hvad du prøver at gøre. Hvis du forsøger at generere side-data, er der nogle muligheder for, hvordan du gør dette. Du kan generere separate links til hver side, som du vil kunne komme direkte til.
 1 
 2 
 3 
...
Bemærk, at den aktuelle side i eksemplet håndteres forskelligt i koden og med CSS.
Hvis du ønsker, at de pagedata skal ændres via AJAX, er det her, jQuery ville komme ind. Hvad du ville gøre er at tilføje en klikhåndtering til hvert af ankermærkerne, der svarer til en anden side. Denne klikhåndterer vil påkalde nogle jQuery-koder, der går og henter den næste side via AJAX og opdaterer tabellen med de nye data. Eksemplet nedenfor forudsætter, at du har en webservice, der returnerer de nye sidedata.
$ (dokument). klar (funktion () {
$ ('a.pager-link'). klik på (funktion () {
var side = $ (denne) .attr ('href'). split (/ \? /) [1];
$ .ajax ({
type: 'POST',
url: '/ path-to-service',
data: side,
succes: funktion (indhold) {
$ ('# myTable'). html (indhold); // erstatte
}
});
returner falsk; // for at stoppe linket
});
});
|
Jeg synes også, at location.replace (URL) er den bedste måde, men hvis du vil underrette søgemaskinerne om din omdirigering (de analyserer ikke JavaScript-kode for at se omdirigering), skal du tilføje rel = "canonical" meta tag til dit websted.
Tilføjelse af et noscript-afsnit med et HTML-opdatering-metatag er også en god løsning. Jeg foreslår, at du bruger dette JavaScript-omdirigeringsværktøj tiloprette omdirigeringer. Det har også Internet Explorer-understøttelse til at passere HTTP-henvisningen.
Prøvekode ser uden forsinkelse sådan ud:







  



|
Men hvis nogen vil omdirigere tilbage til startsiden, kan han bruge følgende uddrag.
window.location = window.location.host
Det ville være nyttigt, hvis du har tre forskellige miljøer som udvikling, iscenesættelse og produktion.
Du kan udforske dette vindue eller window.location-objekt ved blot at sætte disse ord i Chrome Console eller Firebugs Console.
|
JavaScript giver dig mange metoder til at hente og ændre den aktuelle URL, der vises i browserens adresselinje. Alle disse metoder bruger Location-objektet, som er en egenskab for Window-objektet. Du kan oprette et nyt placeringsobjekt, der har den aktuelle URL som følger.
var currentLocation = window.location;
Grundlæggende struktur for en URL
//:/ 
Protokol - Angiver det protokolnavn, der skal bruges til at få adgang til ressourcen på Internettet. (HTTP (uden SSL) eller HTTPS (med SSL))
værtsnavn - Værtsnavn angiver den vært, der ejer ressourcen. For eksempel www.stackoverflow.com. En server leverer tjenester ved hjælp af navnet på værten.
port - Et portnummer, der bruges til at genkende en bestemt proces, hvortil en internet- eller anden netværksmeddelelse skal videresendes, når den ankommer til en server.
stienavn - stien giver information om den specifikke ressource i den vært, som webklienten vil have adgang til. For eksempel stackoverflow.com/index.html.
forespørgsel - En forespørgselsstreng følger stykomponenten og giver en række oplysninger, som ressourcen kan bruge til et eller andet formål (for eksempel som parametre til en søgning eller som data, der skal behandles).
hash - Ankerdelen af ​​en URL inkluderer hash-tegnet (#).
Med disse placeringsobjektegenskaber kan du få adgang til alle disse URL-komponenter
hash -Sætter eller returnerer ankerdelen af ​​en URL.
vært-sæt
eller returnerer værtsnavnet og porten på en URL.
værtsnavn -Sæt eller
returnerer værtsnavnet på en URL.
href -Sætter eller returnerer hele
URL.
stienavn - Indstiller eller returnerer stienavnet på en URL.
port - Indstiller eller returnerer det portnummer, som serveren bruger til en URL.
protokol - Indstiller eller returnerer protokollen for en URL.
søg -Sæt
eller returnerer forespørgselsdelen af ​​en URL
Nu Hvis du vil ændre en side eller omdirigere brugeren til en anden side, kan du bruge href-egenskaben for Location-objektet som dette
Du kan bruge href-egenskaben for Location-objektet.
window.location.href = "http://www.stackoverflow.com";
Placeringsobjekt har også disse tre metoder
tildel () - Indlæser et nyt dokument.
reload () - Genindlæser det aktuelle dokument.
erstatte () - Erstatter det aktuelle dokument med et nyt
Du kan bruge tildele () og erstatte metoder også til at omdirigere til andre sider som disse
location.assign ("http://www.stackoverflow.com");
location.replace ("http://www.stackoverflow.com");
Hvordan tildeler () og erstat () adskiller sig - Forskellen mellem erstat () metode og tildel () metode () er, at erstat () fjerner URL'en til det aktuelle dokument fra dokumenthistorikken, betyder at det ikke er muligt at knappen "tilbage" for at navigere tilbage til det originale dokument. Så brug metoden alloc (), hvis du vil indlæse et nyt dokument, og vil give mulighed for at navigere tilbage til det originale dokument.
Du kan ændre placeringsobjektets href-egenskab ved hjælp af jQuery også sådan
$ (placering) .attr ('href', url);
Og derfor kan du omdirigere brugeren til en anden url.
|
Dybest set er jQuery bare en JavaScript-ramme, og til at gøre nogle af tingene som omdirigering i dette tilfælde kan du bare bruge ren JavaScript, så i så fald har du 3 muligheder ved at bruge vaniljeJavaScript:
1) Brug af placeringserstatning, dette erstatter den aktuelle historik for siden, hvilket betyder, at det ikke er muligt at bruge tilbage-knappen til at gå tilbage til den oprindelige side.
window.location.replace ("http://stackoverflow.com");
2) Ved hjælp af placeringstildeling bevares historikken for dig, og ved at bruge tilbage-knappen kan du gå tilbage til den originale side:
window.location.assign ("http://stackoverflow.com");
3) Jeg anbefaler at bruge en af ​​disse tidligere måder, men dette kan være den tredje mulighed ved hjælp af ren JavaScript:
window.location.href = "http://stackoverflow.com";
Du kan også skrive en funktion i jQuery for at håndtere den, men anbefales ikke, da det kun er en linjers ren JavaScript-funktion, og du kan også bruge alle ovennævnte funktioner uden vindue, hvis du allerede er i vinduesområdet, for eksempel window.location.replace ("http://stackoverflow.com"); kunne være location.replace ("http://stackoverflow.com");
Også viser jeg dem alle på billedet nedenfor:
|
Skal bare være i stand til at indstille ved hjælp af window.location.
Eksempel:
window.location = "https://stackoverflow.com/";
Her er et tidligere indlæg om emnet: Hvordan omdirigerer jeg til en anden webside?
|
Før jeg begynder, er jQuery et JavaScript-bibliotek, der bruges til DOM-manipulation. Så du bør ikke bruge jQuery til en sideomdirigering.
Et tilbud fra Jquery.com:
Mens jQuery muligvis kører uden større problemer i ældre browserversioner,
Vi tester ikke aktivt jQuery i dem og retter normalt ikke fejl
der kan vises i dem.
Det blev fundet her:
https://jquery.com/browser-support/
Så jQuery er ikke en end-all and be-all-løsning til bagudkompatibilitet.
Den følgende løsning ved hjælp af rå JavaScript fungerer i alle browsere og har været standard i lang tid, så du ikke har brug for nogen biblioteker til understøttelse af browsere.
Denne side omdirigeres til Google efter 3000 millisekunder



 eksempel 


Du vil snart blive omdirigeret til google.

Forskellige muligheder er som følger: window.location.href = "url"; // Simulerer normal navigation til en ny side window.location.replace ("url"); // Fjerner den aktuelle URL fra historikken og erstatter den med en ny URL window.location.assign ("url"); // Føjer ny URL til historikstakken og omdirigerer til den nye URL window.history.back (); // Simulerer et klik på tilbageknappen window.history.go (-1); // Simulerer et klik på tilbageknappen window.history.back (-1); // Simulerer et klik på tilbageknappen window.navigate ("side.html"); // Samme som window.location = "url" Når du bruger erstatning, vender tilbage-knappen ikke tilbage til omdirigeringssiden, som om den aldrig var i historien. Hvis du vil have, at brugeren skal kunne gå tilbage til omdirigeringssiden, skal du bruge window.location.href eller window.location.assign. Hvis du bruger en mulighed, der lader brugeren gå tilbage til omdirigeringssiden, skal du huske, at når du åbner omdirigeringssiden, omdirigerer du dig tilbage. Så tag det i betragtning, når du vælger en mulighed til din omdirigering. Under forhold, hvor siden kun omdirigerer, når en handling udføres af brugeren, vil det være okay at have siden i bagknappens historie. Men hvis siden automatisk omdirigerer, skal du bruge erstat, så brugeren kan bruge tilbage-knappen uden at blive tvunget tilbage til den side, som omdirigering sender. Du kan også bruge metadata til at køre en sideomdirigering som følger. META Opdater META Placering BASSE kapring Mange flere metoder til at omdirigere din intetanende klient til en side, de måske ikke ønsker at gå, findes på denne side (ikke en af ​​dem er afhængig af jQuery): https://code.google.com/p/html5security/wiki/RedirectionMethods Jeg vil også gerne påpege, at folk ikke kan lide at blive omdirigeret tilfældigt. Omdiriger kun folk, når det er absolut nødvendigt. Hvis du begynder at omdirigere folk tilfældigt, vil de aldrig gå til dit websted igen. Det næste afsnit er hypotetisk: Du kan også blive rapporteret som et ondsindet websted. Hvis det sker, når folk klikker på et link til dit websted, kan brugerens browser advare dem om, at dit websted er ondsindet. Hvad der også kan ske er, at søgemaskiner kan begynde at droppe din vurdering, hvis folk rapporterer om en dårlig oplevelse på dit websted. Se Googles retningslinjer for webmastere om omdirigeringer: https://support.google.com/webmasters/answer/2721217?hl=da&ref_topic=6001971 Her er en sjov lille side, der slår dig ud af siden. Gå væk

Gå væk

Hvis du kombinerer de to sideeksempler sammen, ville du have en spædbarnsløkke, der omdirigerer detgaranterer, at din bruger aldrig vil bruge dit websted nogensinde igen. | var url = 'asdf.html'; window.location.href = url; | Du kan gøre det uden jQuery som: window.location = "http://ditdomæne.com"; Og hvis du kun vil have jQuery, kan du gøre det som: $ jq (vindue) .attr ("placering", "http://ditdomæne.com"); | Dette fungerer med jQuery: $ (vindue) .attr ("placering", "http://google.fr"); | # HTML-sideomdirigering ved hjælp af jQuery / JavaScript-metoden Prøv denne eksempelkode: funktion YourJavaScriptFunction () { var i = $ ('# login'). val (); hvis (i == 'login') window.location = "Login.php"; andet window.location = "Logout.php"; } Hvis du vil give en komplet URL som window.location = "www.google.co.in" ;. | Oprindeligt spørgsmål: "Hvordan omdirigeres ved hjælp af jQuery?", Hvorfor svaret implementerer jQuery >> Gratis brugssag. Sådan omdirigeres du bare til en side med JavaScript: window.location.href = "/ contact /"; Eller hvis du har brug for en forsinkelse: setTimeout (funktion () { window.location.href = "/ contact /"; }, 2000); // Tid i millisekunder jQuery giver dig mulighed for nemt at vælge elementer fra en webside. Du kan finde alt, hvad du vil have på en side og derefter bruge jQuery til at tilføje specielle effekter, reagere på brugerhandlinger eller vise og skjule indhold inden for eller uden for det valgte element. Alle disse opgaver starter med at vide, hvordan man vælger et element eller en begivenhed. $ ('a, img'). på ('klik', funktion (e) { e.preventDefault (); $ (dette). animeret ({ opacitet: 0 // Sæt nogle CSS-animationer her }, 500); setTimeout (funktion () { // OK, færdigt jQuery-personale, lad os omdirigere window.location.href = "/ contact /"; }, 500); }); Forestil dig, at nogen skrev et script / plugin med 10000 linjer kode. Med jQuery kan du oprette forbindelse til denne kode med kun en linje eller to. | Du skal sætte denne linje i din kode: $ (placering) .attr ("href", "http://stackoverflow.com"); Hvis du ikke har jQuery, skal du gå med JavaScript: window.location.replace ("http://stackoverflow.com"); window.location.href ("http://stackoverflow.com"); | Så spørgsmålet er, hvordan man laver en omdirigeringsside og ikke hvordan man omdirigerer til et websted? Du skal kun bruge JavaScript til dette. Her er en lille kode, der opretter en dynamisk omdirigeringsside. Så sig, at du bare lægger dette uddrag i en omdirigering / index.html-fil på dit websted, du kan bruge det sådan. http://www.mywebsite.com/redirect?url=http://stackoverflow.com Og hvis du går til dette link, omdirigerer det dig automatisk til stackoverflow.com. Link til dokumentation Og sådan laver du en enkel omdirigeringsside med JavaScript Redigere: Der er også en ting at bemærke. Jeg har tilføjet window.location.replace i min kode, fordi jeg synes, det passer til en omdirigeringsside, men du skal vide, at når du bruger window.location.replace, og du bliver omdirigeret, når du trykker på tilbage-knappen i din browser, vil det ikke kom tilbage til omdirigeringssiden, og den vil gå tilbage til siden før den, se på denne lille demo-ting. Eksempel: Processen: gem hjem => omdiriger side til google => google Når på google: google => tilbage-knap i browser => gem hjem Så hvis dette passer til dine behov, skal alt være i orden. Hvis du vil inkludere omdirigeringssiden i browserhistorikken, skal du erstatte denne hvis (url) window.location.replace (url); med hvis (url) vindue.placering.href = url; | På din klikfunktion skal du blot tilføje: window.location.href = "URL'en, som du vil omdirigere"; $ ('# id'). klik på (funktion () { window.location.href = "http://www.google.com"; }); | Prøv dette: location.assign ("http://www.google.com"); Kodestykke af eksempel. | jQuery er ikke nødvendigt. Du kan gøre det: window.open ("URL", "_ self", "", "") Det er så let! Den bedste måde at starte en HTTP-anmodning på er document.loacation.href.replace ('URL'). | Skriv først ordentligt. Du vil navigere i en applikation efter et andet link fra din applikation til et andet link. Her er koden: window.location.href = "http://www.google.com"; Og hvis du vil navigere på sider i din applikation, har jeg også kode, hvis du vil. | Du kan omdirigere i jQuery sådan: $ (placering) .attr ('href', 'http://yourPage.com/'); | Brug af JavaScript: Metode 1: window.location.href = "http://google.com"; Metode 2: window.location.replace ("http://google.com"); Brug af jQuery: Metode 1: $ (placering) $ (placering) .attr ('href', 'http://google.com'); Metode 2: Genanvendelig funktion jQuery.fn.redirectTo = funktion (url) { window.location.href = url; } jQuery (vindue). omdirigere til ("http://google.com"); | I JavaScript og jQuery kan vi bruge følgende kode til at omdirigere den ene side til en anden side: window.location.href = "http://google.com"; window.location.replace ("side1.html"); | ECMAScript 6 + jQuery, 85 byte $ ({jQueryCode: (url) => location.replace (url)}). attr ("jQueryCode") ("http://example.com") Venligst dræb ikkemig, dette er en vittighed. Det er en joke. Det er en joke. Dette "svarede på spørgsmålet" i den forstand, at det bad om en løsning "ved hjælp af jQuery", som i dette tilfælde indebærer at tvinge det ind i ligningen på en eller anden måde. Ferrybig har tilsyneladende brug for vittigheden forklaret (stadig sjov, jeg er sikker på, at der er begrænsede muligheder på gennemgangsformularen), så uden yderligere ado: Andre svar bruger jQuery's attr () på placeringen eller vindueobjekter unødigt. Dette svar misbruger det også, men på en mere latterlig måde. I stedet for at bruge det til at indstille placeringen bruger dette attr () til at hente en funktion, der indstiller placeringen. Funktionen hedder jQueryCode, selvom der ikke er noget jQuery ved det, og det er bare forfærdeligt at kalde en funktion somethingCode, især når noget ikke engang er et sprog. De "85 byte" er en henvisning til Code Golf. Golf er naturligvis ikke noget, du skal gøre uden for kodegolf, og desuden er dette svar tydeligvis faktisk ikke golfet. Dybest set krølle. | Javascript: window.location.href = 'www.your_url.com'; window.top.location.href = 'www.your_url.com'; window.location.replace ('www.your_url.com'); Jquery: var url = 'www.your_url.com'; $ (placering) .attr ('href', url); $ (placering). prop ('href', url); // i stedet for placering kan du bruge vindue | Her er en omdirigering til tidsforsinkelse. Du kan indstille forsinkelsestiden til hvad du vil: Dit dokumenttitel
Du omdirigeres om 8 sekunder!
| Der er tre måder at gøre dette på, window.location.href = 'blaah.com'; window.location.assign ('blaah.com'); og... window.location.replace ('blaah.com'); Den sidste er bedst for en traditionel omdirigering, fordi den ikke gemmer den side, du gik til, før den blev omdirigeret i din søgehistorik. Men hvis du bare vil åbne en fane med JavaScript, kan du bruge et af ovenstående.1 REDIGER: Vinduespræfikset er valgfrit. | 1 2 Næste Er det ikke det svar, du leder efter? Gennemse andre spørgsmål mærket javascript jquery omdirigering eller stil dit eget spørgsmål.